package com.base.cn.platform.os.service.manage.config;

import com.base.cn.platform.os.entity.manage.config.SysConfig;
import com.base.cn.platform.os.service.FeignAuthConfig;
import com.base.cn.platform.os.service.manage.BaseService;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

/**
 * 配置数据接口
 *
 * @author s.li
 * @create 2018-04-09-19:05
 */
@FeignClient(value = BaseService.appName,configuration = FeignAuthConfig.class)
public interface SysConfigService extends BaseService {

    /**
     * 通过类型标识，获取配置内容
     * @param configKey
     * @return 配置内容
     */
    @RequestMapping(contextPath + "/getSysConfigContext")
    TreeMap<String, String> getSysConfigContext(@RequestParam("configKey") String configKey);

    /**
     * 查询配置数据列表
     * @param sysConfig 查询条件
     * @return 配置数据列表
     */
    @RequestMapping(contextPath + "/querySysConfigList")
    List<SysConfig> querySysConfigList(@RequestBody SysConfig sysConfig);

    /**
     * 通过ID，获取配置内容
     * @param id 配置ID
     * @return 配置对象
     */
    @RequestMapping(contextPath + "/getSysConfigById")
    SysConfig getSysConfigById(@RequestParam("id") BigDecimal id);

    /**
     * 保存配置数据
     * @param sysConfig 配置数据对象
     * @return SysConfig
     */
    @RequestMapping(contextPath + "/saveConfig")
    Map<String,Object> saveConfig(@RequestBody SysConfig sysConfig);

    /**
     * 通过类型标识，获取配置信息
     * @param configType
     * @return 配置内容
     */
    @RequestMapping(contextPath + "/getSysConfigByConfigType")
    SysConfig getSysConfigByConfigType(@RequestParam("configType") String configType);
}
